/**
 * 重置 optionStr，该字符串记录了用户的偏好选项，存储在浏览器本地
 */
function resetOptionsStr() {

    // 采用默认偏好设置
    const optionObj = {
        navPageShowMostOftenClicked: false,
        navPageShowRecentlyClicked: true,
        navPageShowBadges: false,
        navPageOpenLinkInNewTab: false,
        linkSortOrder: 1,
        maxNumberOfLinksShowInRow: 3,
        miniNumberOfLinksShowInRow: 1
    }

    // 对象转字符串
    const optionStr = JSON.stringify(optionObj)

    // 存储偏好设置
    localStorage.setItem(optionStrKey, optionStr)

}

/**
 * 根据传入的 optionStr，设置各选项的选中状态
 */
function setOptions(optionStr) {

    try {

        let optionsObj = JSON.parse(optionStr)

        // 显示最常访问
        if (optionsObj.navPageShowMostOftenClicked) {
            $('#showMostOftenClicked').attr('checked', 'checked');
        } else {
            $('#showMostOftenClicked').removeAttr('checked');
        }

        // 显示最近访问
        if (optionsObj.navPageShowRecentlyClicked) {
            $('#showRecentlyClicked').attr('checked', 'checked');
        } else {
            $('#showRecentlyClicked').removeAttr('checked');
        }

        // 显示网址数量、点击次数
        if (optionsObj.navPageShowBadges) {
            $('#showBadges').attr('checked', 'checked');
        } else {
            $('#showBadges').removeAttr('checked');
        }

        // 在新的标签页中打开链接
        if (optionsObj.navPageOpenLinkInNewTab) {
            $('#openLinkInNewTab').attr('checked', 'checked');
        } else {
            $('#openLinkInNewTab').removeAttr('checked');
        }

        // 链接排序方式
        $("#inputLinkSortOrder" + optionsObj.linkSortOrder).attr("checked", "checked")

        // 每行最多显示多少个链接
        $("#inputMaxNumber" + optionsObj.maxNumberOfLinksShowInRow).attr('checked', 'checked')

        // 每行最少显示多少个链接
        $("#inputMiniNumber" + optionsObj.miniNumberOfLinksShowInRow).attr('checked', 'checked')

    } catch (e) {
        console.log("optionStr 不是有效的 json 字符串。")

        // 使用默认偏好设置
        resetOptionsStr()
        const optionStr = localStorage.getItem(optionStrKey)
        setOptions(optionStr)
    }

}
